有了先前的 ANN 魔法陣教學後,該是來讓各位見習魔法使實戰演練了,前情提要請參見:
[魔法陣系列] Artificial Neural Network (ANN) 之術式解析
[魔法陣系列] Artificial Neural Network (ANN) 之術式啟動
本文使用 TensorFlow 搭建、運行 ANN 模型,並分享 TensorBoard 給大家,它是 TensorFlow 的視覺化工具,對於呈現複雜的 NN 模型訓練是有幫助的。
莉森的喃喃:身為視覺取向的人,若搭配動畫或圖片會更加記憶深刻,你們也是嗎~?
執行的環境版本:
無腦安裝法:
下載 Anaconda Distribution,我本身使用 mac 所以下載 macOS Installer,不同作業系統的同學們請自行選擇合適的下載。
打開 terminal,安裝 TensorBoard 與 TensorFlow:
conda install tensorboard -y
conda install tensorflow -y
確認 TensorFlow 是否成功安裝:
# 進入Python shell
import tensorflow as tf
tf.__version__
from tensorboard import version; print(version.VERSION)
程式碼使用 TensorFlow 官方提供的 tutorial 為範例,僅摘要出重點部分,建議大家去跑一遍~完整版的 Code 請點此
MNIST 是一個廣泛被運用在測試新技術或演算法的資料集,由 28x28 尺寸的手寫數字且帶有標籤(label)的圖片所組成。
圖片來源:https://en.wikipedia.org/wiki/MNIST_database
一層輸入層 --> 一層隱藏層(500 個神經元) --> dropout --> 一層輸出層(10 個神經元)
dropout 這邊有提到,不要害怕這個陌生的東西~
激活函數(activation function):ReLU
代價函數(cost function):softmax_cross_entropy_with_logits
優化器(Optimizer):AdamOptimizer
(這裡有對不同的Optimizer做介紹)
這個官方範例展示了每個 TensorBoard 的功能,常用的方法如下:
tf.name_scope(<scope_name>)
:主要用於管理一個 Graph 裡面的各種操作,返回的是一個以 scope_name 命名的 context manager,以便它們在 TensorBoard 中有意義地分組。tf.summary.scalar()
與 tf.summary.histogram()
:利用這兩個方法紀錄訓練過程,之後可在 TensorBoard 中的 Scalars 與 Histograms 頁籤檢視。tf.summary.merge_all()
記得最後要將所有想顯示在 tensorboard 的資料整合tf.summary.FileWriter(PATH, sess.graph)
將整合好的資料寫入log檔運行官網的程式後,點開 TensorBoard 就可以看到趨勢變化嚕,截幾張圖給你們,還是老話一句,強烈推薦大家可以從安裝環境開始動手演練一遍,TensorBoard 平台有一些互動式操作在那默默等著你們光臨。
ANN 的 Graph
訓練的迭代過程
輸入的資料長相
最後,介紹一個優秀的視覺化的 tensorflow 網站,提供使用者在上面測定參數,觀看神經網絡訓練的過程變化。
莉森的喃喃:週五夜晚打文章好累啊,如果文章中有疏漏請留言告訴我,謝謝點進來閱讀的你們唷!